Submission #2542241


Source Code Expand

#include <iostream>
#include <cmath>
#include <vector>
#include <bitset>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <climits>
#include <set>
#include <map>
#include <iomanip>
#include <cassert>
#include <functional>
#include <cstring>

using namespace std;

#define mp make_pair
#define FOR(i, a, b) for(int (i)=a;(i)<(b);++(i))
#define rep(i, n)  FOR(i,0,n)
#define FFOR(i, a, b) for(int (i)=a;(i)>(b);--(i))
#define rrep(i,n) FFOR(i,0,n)
#define vsort(v) sort((v).begin(), (v).end());					//小さい順
#define rvsort(v) sort(v.begin(), v.end(),greater<>());		//大きい順
#define YES cout<<"YES"<< endl
#define NO cout<<"NO"<<endl
#define Yes cout<<"Yes"<<endl
#define No cout<<"No"<<endl  
#define yes cout<<"yes"<<endl
#define no cout<<"no"<<endl
#define all(c) (c).begin(),(c).end()
#define ll long long
#define lb long double
#define vi vector<int>
#define vvi vector<vector<int>>
#define vl vector<ll>
#define vvl vector<vector<ll>>
#define vb vector<bool>
#define vvb vector<vector<bool>>
#define vs vector<string>
#define vc vector<char>
#define vvc vector<vector<char>>
#define Print(p) cout<<(p)<<endl
#define F first
#define S second
#define pb push_back
#define ll long long
#define mod 1000000007LL
#define INF 123456789012345
typedef pair<int, int> P;
typedef pair<int, P> PP;

const int maxn =1e4 + 10;

string s[maxn];

int main() {
	int n;cin >> n;

	rep(i,n) cin >> s[i];

	string t;cin >> t;
	// tの前か後ろのどっちに入るか
	int mae = 0;
	int mid = 0;
	int usiro = 0;

	rep(i,n)
	{
		bool ok = false;
		bool notmae = false;
		bool notusiro = false;
		rep(j,s[i].size())
		{
			if(j > t.size()-1)
			{
				if(notusiro) mid++;
				else usiro += 1;
				ok = true;
				break;
			}

			if(s[i][j] == '?') 
			{
				if(t[j] != 'a' && t[j] != 'z')
				{
					mid++;
					ok=true;
					break;
				}

				if(t[j] == 'a')	notmae = true;
				if(t[j] == 'z') notusiro = true;

				if(notmae && notusiro)
				{
					mid++;
					ok=true;
					break;
				}
			}

			if(s[i][j]-0 < t[j]-0)
			{
				if(notmae) mid++;
				else mae += 1;
				ok = true;
				break;
			}
			else if(s[i][j]-0 > t[j]-0)
			{
				if(notusiro) mid++;
				else usiro += 1;
				ok = true;
				break;
			}

		}
		if(ok) continue;
		
		if(s[i].size() == t.size())	mid++;
		else
		{
			if(notmae) mid++;
			else mae++;
		}



	}


	rep(i,mid) cout << mae+1+i << " ";
	
	cout <<mae+1+mid<< endl;
	return 0;
}

Submission Info

Submission Time
Task A - Atcoder Handles
User sawakee
Language C++14 (GCC 5.4.1)
Score 250
Code Size 2572 Byte
Status AC
Exec Time 9 ms
Memory 896 KB

Judge Result

Set Name Subtask1 Subtask2
Score / Max Score 130 / 130 120 / 120
Status
AC × 3
AC × 6
Set Name Test Cases
Subtask1 sub1_in1.txt, sub1_in2.txt, sub1_in3.txt
Subtask2 sub1_in1.txt, sub1_in2.txt, sub1_in3.txt, sub2_in1.txt, sub2_in2.txt, sub2_in3.txt
Case Name Status Exec Time Memory
sub1_in1.txt AC 1 ms 384 KB
sub1_in2.txt AC 2 ms 384 KB
sub1_in3.txt AC 2 ms 384 KB
sub2_in1.txt AC 1 ms 384 KB
sub2_in2.txt AC 5 ms 640 KB
sub2_in3.txt AC 9 ms 896 KB