QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#215491 | #5108. Prehistoric Programs | YYYYYYYY | WA | 31ms | 4532kb | C++14 | 3.2kb | 2023-10-15 11:07:25 | 2023-10-15 11:07:26 |
Judging History
answer
#include <iostream>
#include <cstring>
#include<string>
#include <vector>
int main() {
int n = 0;
std::string parentheses;
int in[100000][2]={0};//[),(]
std::cin >> n;
int sum = 0;
for (int i = 0; i < n; i++) {
std::cin >> parentheses;
int par = 0;
while(parentheses[par]!='\0'){
if(parentheses[par]=='('){
in[i][1] += 1;
}
else if(parentheses[par]==')'){
if(in[i][1]>0){
in[i][1] -= 1;
}
else {
in[i][0] += 1;
}
}
par++;
}
sum += in[i][0]-in[i][1];
std::cout<<in[i][0]<<" "<<in[i][1];
}
if(sum!=0){
std::cout<<"impossible!!"<<sum;
return 0;
}
std::vector<int> v;
std::vector<int> value0;
std::vector<int> value1;
std::vector<int> right;
std::vector<int> left;
int middle = 0;
int cur[2]={0};
int flag = 0;
right.insert(right.begin(),0);
left.insert(left.begin(),0);
for(int i = 0; i < n; i++){
middle = v.size()/2;
if(in[i][1]==0 && in[i][0]!=0){//only)
// v.push_back(i+1);
// value0.push_back(in[i][0]);
// value1.push_back(in[i][1]);
// flag -= in[i][0];
right[0] += in[i][0];
right.push_back(i+1);
}
else if(in[i][0]==0 && in[i][1]!=0){
// v.insert(v.begin(), i+1);
// value0.insert(value0.begin(), in[i][0]);
// value1.insert(value1.begin(), in[i][1]);
// flag += in[i][1];
left[0] += in[i][1];
left.push_back(i+1);
}
else if(v.size()==0){
// std::cout<<"Y"<<middle;
v.insert(v.begin()+middle, i+1);
value0.insert(value0.begin()+middle, in[i][0]);
value1.insert(value1.begin()+middle, in[i][1]);
}
else if(in[i][0]-in[i][1]==0){
// std::cout<<"-->"<<flag;
// if(flag >0){
// middle++;
// }
v.insert(v.begin()+middle, i+1);
value0.insert(value0.begin()+middle, in[i][0]);
value1.insert(value1.begin()+middle, in[i][1]);
}
else if(in[i][0]-in[i][1]>0){//)多,放後
v.push_back(i+1);
value0.push_back(in[i][0]);
value1.push_back(in[i][1]);
}
else if(in[i][0]-in[i][1]<0){
v.insert(v.begin()+middle, i+1);
value0.insert(value0.begin()+middle, in[i][0]);
value1.insert(value1.begin()+middle, in[i][1]);
}
}
//v[i] = left+v+right
sum = left[0];
// std::cout<<"left"<<left[0]<<"right"<<right[0];
for(int i = 0; i < v.size(); i++){
// std::cout<<value0[i]<<"?";
sum -= value0[i];
if(sum<0){
std::cout<<"impossible";
return 0;
}
sum+=value1[i];
}
if(sum-right[0]<0){
// std::cout<<"impossible";
// return 0;
}
for (int i = 1; i < left.size(); i++) {
std::cout << left[i] << " ";
}
for (int i = 0; i < v.size(); i++) {
std::cout << v[i] << " ";
}
for (int i = 1; i < right.size(); i++) {
std::cout << right[i] << " ";
}
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 31ms
memory: 4532kb
input:
50000 ( ( ))))()))()(()))()()()))()(((((()(((()))()(((()))((()(())))))(()( ) ( ) ((( ( ( ( ( ( () ( ) ( )((())()(( )))))( ( ) )) )() ( ) ) )()( ( ( () ( ) ( )()((((())()))())( ( ( )( ( ( (()())()) ) ) ( ( ( )((())))((())))))))))((((()()))()))))))))((()())())) ) )() ) ) ) ) ) ())(())))))()(()((()(())...
output:
0 10 19 71 00 11 00 30 10 10 10 10 10 00 11 00 11 35 10 11 02 01 00 11 01 01 10 10 10 00 11 00 11 10 10 11 10 10 11 01 01 00 10 10 116 01 01 01 01 01 01 01 05 20 30 11 04 30 10 11 00 12 01 22 00 01 01 01 00 00 11 00 11 01 01 00 70 71 00 10 11 15 21 14 01 011 70 11 01 01 00 10 10 10 10 10 10 11 00 17...
result:
wrong answer wrong output