atcoderのc問題でtle
Q&A
Closed
解決したいこと
Atcoderのabc354,C問題で2つだけtleになってしまう。
良ければ改善案教えてください。
該当するソースコード
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int n;
cin >> n;
vector<pair<int, int>> cards(n), copys(n);
vector<int> ans(n, -1);
for(int i = 0; i < n; i++)
{
int first, second;
cin >> first;
cin >> second;
cards.at(i) = make_pair(first, second);
}
copys = cards;
sort(cards.rbegin(), cards.rend());
int min = cards[0].second;
for(int i = 1; i < n; i++)
{
if(min < cards[i].second) cards[i].first = -1;
if(min > cards[i].second)
{
min = cards[i].second;
}
}
int sum = 0;
for(int i = 0; i < n; i++)
{
if(cards[i].first != -1) sum++;
}
cout << sum << endl;
vector<int> index(n, -1);
for(int i = 0; i < n; i++)
{
if(cards[i].first != -1)
{
auto it = find(copys.cbegin(), copys.cend(), cards[i]);
index[i] = distance(copys.cbegin(), it);
}
}
sort(index.begin(), index.end());
for(int i = 0; i < n; i++)
{
if(index[i] != -1) cout << index[i] + 1 << " ";
}
cout << endl;
return 0;
}
問題: https://atcoder.jp/contests/abc354/tasks/abc354_c
提出結果: https://atcoder.jp/contests/abc354/submissions/53638799
0