コンピュータプロセッサには、実行するN個のタスクが与えられます(1≤N≤50,000)。i番目のタスクにはTi秒の処理時間が必要です(1≤Ti≤1,000,000,000)。プロセッサは次のようにタスクを実行します。各タスクは1からNまで順番に1秒間実行され、その後プロセッサはタスク1からこれを繰り返します。タスクが完了すると、それ以降は実行されません。反復。タスクごとに、タスクが完了してから経過した合計実行時間を決定します。入力
入力の最初の行には整数Nが含まれ、次のN行には整数T1からTNが含まれます。出力
N行を出力します。そのi番目には、タスクiが処理されたときに経過した時間を表す整数が含まれています。
例
入力: 5 8 1 3 3 8
出力: 22 2 11 12 23
2番目のタスクは最初の反復中に完了し、2秒で終了します。3番目の反復では、3番目と4番目のタスクはそれぞれ11秒と12秒で完了します。最後に、8回目の反復で、最初と最後のタスクはそれぞれ22秒と23秒で完了します。
アプローチは何ですか?
これは私のコードです:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
int total=0;
for(int i=0;i<n;i++)
{cin>>a[i];total+=a[i];}
int b[n];
int j=0;
for(int i=0;i<total;i++)
{
while(a[j%n]==0) j++;
a[j%n]-=1;
if(a[j%n]==0) b[j%n]=i+1; j++;
}
for(int i=0;i<n;i++)
cout<<b[i]<<endl;
system("pause");
return 0;
}
しかし、これはspojでは受け入れられません...