작성
·
167
0
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int p[2001];
int main(){
freopen("input.txt","rt",stdin);
int n,k,pos=0,bp=0,tot=0;
// vector<int> p(n+1);
cin>>n;
for(int i=1;i<=n;i++) {
cin>>p[i];
tot+=p[i];
}
if(k>=tot) {
printf("-1\n");
return 0;
}
cin>>k;
while(1){
pos++;
if(pos>n) pos=1;
if(p[pos]==0) continue;
p[pos]--;
bp++;
if(bp==k) break;
}
while(1){
pos++;
if(pos>n) pos=1;
if(p[pos]!=0) break;
}
cout<< pos;
return 0;
}
위 코드에서 주석해놓은 벡터배열로 선언해서 실행하면 타임리밋이고 int 배열로 선언하면 잘 되는데 왜 그런건가요? 처음에 벡터로 풀었는데 당황스러웠어요
답변 2
0
0
다시 답변드립니다.
cin>>n위치와 cin>>k의 위치가 잘못되어 있습니다. 아래는 수정한 코드입니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//int p[2001];
int main(){
//freopen("input.txt","rt",stdin);
int n,k,pos=0,bp=0,tot=0;
cin>>n;
vector<int> p(n+1);
for(int i=1;i<=n;i++) {
cin>>p[i];
tot+=p[i];
}
cin>>k;
if(k>=tot) {
printf("-1\n");
return 0;
}
while(1){
pos++;
if(pos>n) pos=1;
if(p[pos]==0) continue;
p[pos]--;
bp++;
if(bp==k) break;
}
while(1){
pos++;
if(pos>n) pos=1;
if(p[pos]!=0) break;
}
cout<< pos;
return 0;
}